const path = require("path");
const resolve = (dir) => path.join(__dirname, dir);
const IS_PROD = ["production", "prod"].includes(process.env.NODE_ENV);
const { CleanWebpackPlugin } = require("clean-webpack-plugin");

//开启引用cdn公共库
// let cdnURL = "//wecloud-res-test";
// try {
//   const argv = JSON.parse(process.env.npm_config_argv);
//   const cooked = argv.cooked[2] === "-test" ? "-test" : "-formal"; //默认使用正式环境的cdn地址
//   const isFormal = cooked === "-formal";
//   cdnURL = isFormal ? "//wecloud-fe-res" : "//wecloud-res-test";
// } catch (error) { }

module.exports = {
  publicPath: "", // 默认'/'，部署应用包时的基本 URL
  outputDir: "../webapp", // 'dist', 生产环境构建文件的目录
  // assetsDir: "", // 相对于outputDir的静态资源(js、css、img、fonts)目录
  lintOnSave: false,
  runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本
  productionSourceMap: !IS_PROD, // 生产环境的 source map
  parallel: require("os").cpus().length > 1, //使用多线程否---多余
  pwa: {},
  css: {
    loaderOptions: {
      stylus: {
        preferPathResolver: "webpack",
        paths: [path.join(__dirname, "src/stylus")],
        import: ["global.styl"],
      },
    },
  },
  chainWebpack: (config) => {
    // 修复HMR
    config.resolve.symlinks(true);
    //引入cdn
    // const cdn = {
    //   css: [`${cdnURL}.oss-cn-hangzhou.aliyuncs.com/platform/core.css`],
    //   js: [`${cdnURL}.oss-cn-hangzhou.aliyuncs.com/platform/core.js`],
    // }
    // config.plugin('html').tap(args => {
    //   // html中添加cdn
    //   args[0].cdn = cdn
    //   // 修复 Lazy loading routes Error
    //   args[0].chunksSortMode = 'none'
    //   return args
    // }),

    // 使用svg组件
    config.module
      .rule("svg")
      .exclude.add(resolve("src/assets/svg"))
      .end();

    config.module
      .rule("icons")
      .test(/\.svg$/)
      .include.add(resolve("src/assets/svg"))
      .end()
      .use("svg-sprite-loader")
      .loader("svg-sprite-loader")
      .options({
        symbolId: "icon-[name]",
      });

    // 添加别名
    config.resolve.alias
      .set("@", resolve("src"))
      .set("@assets", resolve("src/assets"))
      .set("@components", resolve("src/components"))
      .set("@views", resolve("src/views"))
      .set("@router", resolve("src/router"))
      .set("@datas", resolve("src/datas"))
      .set("@libs", resolve("src/libs"))
      .set("@api", resolve("src/api"))
      .set("@pages", resolve("src/pages"))
      .set("@store", resolve("src/store"));

    return config;
  },
  configureWebpack: (config) => {
    const plugins = [
      new CleanWebpackPlugin({
        cleanOnceBeforeBuildPatterns: ["**/*", "!WEB-INF", "!WEB-INF/*"],
      }),
    ];
    config.plugins = [...config.plugins, ...plugins];
  },
  devServer: {
    // overlay: { // 让浏览器 overlay 同时显示警告和错误
    //   warnings: true,
    //   errors: true
    // },
    open: false, // 是否打开浏览器
    // host: "localhost",
    // port: "8080", // 代理断就
    // https: false,
    // hotOnly: false, // 热更新
    proxy: {
      "/devopsGwConf": {
        //与libs/ajax/index.js 中url路径相匹配 wec-devops-gwconf
        target: "http://iwecloud10:31006", // 目标代理接口地址
        secure: false,
        changeOrigin: true, // 开启代理，在本地创建一个虚拟服务端
      },
    },
  },
};
